package com.wolfeyes.common.exception;

import com.wolfeyes.common.utils.network.web.MessageUtils;
import com.wolfeyes.common.utils.character.StringUtils;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @title 通用异常基类
 * @author yanyljava
 * @email yanyljava@qq.com
 * @create 2020-09-03 11:04
 */
@Getter
@AllArgsConstructor
public class BaseException extends RuntimeException {

	/**
	 * 
	 */
	private static final long serialVersionUID = 5348217971996710600L;

	/**
	 * 所属模块
	 */
	private String module;

	/**
	 * 错误码
	 */
	private String code;

	/**
	 * 错误码对应的参数
	 */
	private Object[] args;

	/**
	 * 错误消息
	 */
	private String defaultMessage;

	/*
	public BaseException(String module, String code, Object[] args, String defaultMessage) {
		
		this.module = module;
		this.code = code;
		this.args = args;
		this.defaultMessage = defaultMessage;
	}
	*/

	public BaseException(String module, String code, Object[] args)
	{
		this(module, code, args, null);
	}

	public BaseException(String module, String defaultMessage)
	{
		this(module, null, null, defaultMessage);
	}

	public BaseException(String code, Object[] args)
	{
		this(null, code, args, null);
	}

	public BaseException(String defaultMessage)
	{
		this(null, null, null, defaultMessage);
	}

	@Override
	public String getMessage()
	{
		String message = null;
		if (!StringUtils.isEmpty(code))
		{
			message = MessageUtils.message(code, args);
		}
		if (message == null)
		{
			message = defaultMessage;
		}
		return message;
	}

	/*
	public String getModule() {
		
		return module;
	}

	public String getCode() {
		
		return code;
	}

	public Object[] getArgs() {
		
		return args;
	}

	public String getDefaultMessage() {
		
		return defaultMessage;
	}
	*/

}


